From 0d024c2df87c636c419577c0b9046815a16792b5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Thu, 13 Nov 2014 02:07:46 +0100 Subject: [PATCH] mir: don't crash when querying infos for an invalid monitor --- gdk/mir/gdkmirscreen.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/gdk/mir/gdkmirscreen.c b/gdk/mir/gdkmirscreen.c index 9d6d82fc23..6911c0611b 100644 --- a/gdk/mir/gdkmirscreen.c +++ b/gdk/mir/gdkmirscreen.c @@ -302,7 +302,8 @@ gdk_mir_screen_get_monitor_width_mm (GdkScreen *screen, gint monitor_num) { g_printerr ("gdk_mir_screen_get_monitor_width_mm (%d)\n", monitor_num); - return get_output (screen, monitor_num)->physical_width_mm; + MirDisplayOutput *output = get_output (screen, monitor_num); + return output ? output->physical_width_mm : 0; } static gint @@ -310,7 +311,8 @@ gdk_mir_screen_get_monitor_height_mm (GdkScreen *screen, gint monitor_num) { g_printerr ("gdk_mir_screen_get_monitor_height_mm (%d)\n", monitor_num); - return get_output (screen, monitor_num)->physical_height_mm; + MirDisplayOutput *output = get_output (screen, monitor_num); + return output ? output->physical_height_mm : 0; } static gchar * @@ -331,11 +333,19 @@ gdk_mir_screen_get_monitor_geometry (GdkScreen *screen, MirDisplayMode *mode; output = get_output (screen, monitor_num); - mode = &output->modes[output->current_mode]; - dest->x = output->position_x; - dest->y = output->position_y; - dest->width = mode->horizontal_resolution; - dest->height = mode->vertical_resolution; + + if (output) + { + mode = &output->modes[output->current_mode]; + dest->x = output->position_x; + dest->y = output->position_y; + dest->width = mode->horizontal_resolution; + dest->height = mode->vertical_resolution; + } + else + { + *dest = {0, 0, 0, 0}; + } } static void -- 2.30.2